1.概念
正则化定义为“ 对学习算法的修改——旨在减少泛化误差而不是训练误差 ”。
目前有许多正则化策略。 有些策略向机器学习模型添加限制参数值的额外约束。 有些策略向目标函数增加额外项来对参数值进行软约束。
有时侯,这些约束和惩罚被设计为编码特定类型的先验知识; 其他时候,这些约束和惩罚被设计为偏好简单模型,以便提高泛化能力。
有时,惩罚和约束对于确定欠定的问题是必要的。 其他形式的正则化,如被称为集成的方法,则结合多个假说来解释训练数据。
2.参数范数惩罚
在神经网络中,参数包括每一层仿射变换的权重和偏置,我们通常 只对权重 做惩罚而不对偏置做正则惩罚。 精确拟合偏置所需的数据通常比拟合权重少得多。
每个权重会指定两个变量如何相互作用。 我们需要在各种条件下观察这两个变量才能良好地拟合权重。 而每个偏置仅控制一个单变量。
这意味着,我们不对其进行正则化也不会导致太大的方差。 另外,正则化偏置参数可能会导致明显的欠拟合。
2.1 L 2 参数正则化
目标函数:
L2 参数正则化效应示意图:
说明: 只有在显著减小目标函数方向上的参数会保留得相对完好。 在无助于目标函数减小的方向上改变参数不会显著增加梯度。 这种不重要方向对应的分量会在训练过程中因正则化而衰减掉。
2.2 L 1 参数正则化
形式地,对模型参数w的L1正则化被定义为:
$$Ω(θ)=||w||^1=∑_i|w_i|$$
即各个参数的绝对值之和正则化。
相比 L 2 正则化, L 1 正则化会产生更稀疏的解。 此处稀疏性指的是最优值中的一些参数为 0 。 L 2
正则化不会使参数变得稀疏,而 L 1 正则化有可能通过足够大的 α 实现稀疏。
由 L 1 正则化导出的稀疏性质已经被广泛地用于特征选择机制。 特征选择从可用的特征子集选择出有意义的特征,化简机器学习问题。
著名的LASSO(Least Absolute Shrinkage and Selection Operator)模型将L1惩罚和线性模型结合,并使用最小二乘代价函数。 L 1 惩罚使部分子集的权重为零,表明相应的特征可以被安全地忽略。
3.作为约束的范数惩罚
这和最小化 $$J^~$$ 的正则化训练问题是完全一样的。 因此,我们可以把参数范数惩罚看作对权重强加的约束。 如果 Ω 是 L 2范数,那么权重就是被约束在一个 L 2 球中。 如果 Ω 是 L 1 范数,那么权重就是被约束在一个 L 1 范数限制的区域中。
通常我们不知道权重衰减系数 α 约束的区域大小,因为 α 的值不直接告诉我们 k 的值。 原则上我们可以解得 k ,但 k 和 α∗ 之间的关系取决于 J 的形式。 虽然我们不知道约束区域的确切大小,但我们可以通过增加或者减小 α 来大致扩大或收缩约束区域。 较大的 α,将得到一个较小的约束区域。
有时候,我们希望使用显式的限制,而不是惩罚。 我们可以修改下降算法(如随机梯度下降算法),使其先计算 J ( θ ) 的下降步长,然后将θ投影到满足 Ω ( θ ) < k 的最近点。 如果我们知道什么样的 k 是合适的,而不想花时间寻找对应于此k处的α值,这会非常有用。原因如下:
a.惩罚可能会导致目标函数非凸而使算法陷入局部极小(对应于小的 θ )。
b.当使用较高的学习率时,很可能进入正反馈,即大的权重诱导大梯度,然后使得权重获得较大更新。 如果这些更新持续增加权重的大小, θ就会迅速增大,直到离原点很远而发生溢出。 重投影的显式约束可以防止这种反馈环引起权重无限制地持续增加。
建议结合使用约束和高学习速率,这样能更快地探索参数空间,并保持一定的稳定性。
4.数据集增强
让机器学习模型泛化得更好的最好办法是使用更多的数据进行训练。 当然,在实践中,我们拥有的数据量是很有限的。
解决这个问题的一种方法是创建假数据并添加到训练集中。方式包括加入特定噪声(如高斯噪声),做一定的几何变换等等。
另一种正则化模型的噪声使用方式是将其 加到权重 ,这项技术主要用于循环神经网络。 这可以被解释为关于权重的贝叶斯推断的随机实现。
贝叶斯学习过程将权重视为不确定的,并且可以通过概率分布表示这种不确定性。 向权重添加噪声是反映这种不确定性的一种实用的随机方法。
大多数数据集的 y 标签都有一定错误。 错误的 y 不利于最大化 log p ( y |x ) 。
避免这种情况的一种方法是显式地对 标签上的噪声 进行建模。 例如,我们可以假设,对于一些小常数 ϵ ,训练集标记 y 是正确的概率1 − ϵ ,(以 ϵ 的概率)任何其他可能的标签也可能是正确的。 这个假设很容易就能解析地与代价函数结合,而不用显式地抽取噪声样本。
例如,标签平滑(label smoothing)通过把确切分类目标从0和1替换成 ϵ k − 1 和 1 − ϵ ,正则化具有 k个输出的softmax函数的模型。 标准交叉熵损失可以用在这些非确切目标的输出上。 使用softmax函数和明确目标的最大似然学习可能永远不会收敛——softmax函数永远无法真正预测0概率或1概率,因此它会继续学习越来越大的权重,使预测更极端。 使用如权重衰减等其他正则化策略能够防止这种情况。
标签平滑的优势是能够防止模型追求确切概率而不影响模型学习正确分类。
5.半监督学习
在半监督学习的框架下, P ( x ) 产生的未标记样本和 P ( x , y ) 中的标记样本都用于估计 P ( y ∣x ) 或者根据 x 预测 y 。
在深度学习的背景下,半监督学习通常指的是学习一个表示 h = f ( x ) 。 学习表示的目的是使相同类中的样本有类似的表示。
无监督学习可以为如何在表示空间聚集样本提供有用线索。 在输入空间紧密聚集的样本应该被映射到类似的表示。
在许多情况下,新空间上的线性分类器可以达到较好的泛化。 这种方法的一个经典变种是使用主成分分析作为分类前(在投影后的数据上分类)的预处理步骤。
我们可以构建这样一个模型,其中生成模型 P ( x ) 或 P ( x , y ) 与判别模型 P ( y ∣ x )共享参数,而不用分离无监督和监督部分。 我们权衡监督模型准则 log P (y∣x) 和无监督或生成模型准则(如 −log P ( x ) 或 − log P ( x , y ) )。 生成模型准则表达了对监督学习问题解的特殊形式的先验知识,即P ( x ) 的结构通过某种共享参数的方式连接到 P ( y ∣ x ) 。
通过控制在总准则中的生成准则,我们可以获得比纯生成或纯判别训练准则更好的权衡。
6.多任务学习
从深度学习的观点看,底层的先验知识如下:能解释数据变化(在与之相关联的不同任务中观察到)的因素中,某些因素是跨两个或更多任务共享的。
7.提前终止
当训练有足够的表示能力甚至会过拟合的大模型时,我们经常观察到,训练误差会随着时间的推移逐渐降低但验证集的误差会再次上升。
这意味着我们只要返回使验证集误差最低的参数设置,就可以获得验证集误差更低的模型(并且因此有希望获得更好的测试误差)。
在每次验证集误差有所改善后,我们存储模型参数的副本。 当训练算法终止时,我们返回这些参数而不是最新的参数。
当验证集上的误差在事先指定的循环次数内没有进一步改善时,算法就会终止。
8. 参数绑定与参数共享
我们经常想要表达的一种常见依赖是某些参数应当彼此接近。 考虑以下情形:我们有两个模型执行相同的分类任务(具有相同类别),但输入分布稍有不同。
形式地,我们有参数为 w ( A ) 的模型 A 和参数为 w ( B ) 的模型 B 。
这两种模型将输入映射到两个不同但相关的输出: $$y ^ ( A ) = f ( w ( A ) , x )$$ 和 $$y ^( B ) = f ( w ( B ) , x ) $$ 。
我们可以想象,这些任务会足够相似(或许具有相似的输入和输出分布),因此我们认为模型参数应彼此靠近: ∀ i , w ( A )_i 应该与w ( B ) _i 接近。 我们可以通过正则化利用此信息。 具体来说,我们可以使用以下形式的参数范数惩罚: Ω ( w ( A ), w ( B ) ) = $$||w ( A ) − w ( B )||^2$$ 。 在这里我们使用 L2惩罚,但也可以使用其他选择。
参数范数惩罚是正则化参数使其彼此接近的一种方式,而更流行的方法是使用约束: 强迫某些参数相等 。
由于我们将各种模型或模型组件解释为共享唯一的一组参数,这种正则化方法通常被称为参数共享。
和正则化参数使其接近(通过范数惩罚)相比,参数共享的一个显著优点是,只有参数(唯一一个集合)的子集需要被存储在内存中。
对于某些特定模型,如卷积神经网络,这可能可以显著减少模型所占用的内存。
9. Bagging和其他集成方法
Bagging是通过结合几个模型降低泛化误差的技术。 主要想法是分别训练几个不同的模型,然后让所有模型表决测试样例的输出。
这是机器学习中常规策略的一个例子,被称为模型平均。 采用这种策略的技术被称为集成方法。
模型平均奏效的原因是不同的模型通常不会在测试集上产生完全相同的误差。
10.Dropout
Dropout通过随机行为训练网络并平均多个随机决定进行预测,实现了一种 参数共享的Bagging 形式。
在训练中使用Dropout时,我们会使用基于小批量产生较小步长的学习算法,如随机梯度下降等。
我们每次在小批量中加载一个样本,然后随机抽样应用于网络中所有输入和隐藏单元的不同二值掩码。 对于每个单元,掩码是独立采样的。
掩码值为1的采样概率(导致包含一个单元)是训练开始前一个固定的超参数。 它不是模型当前参数值或输入样本的函数。
通常在每一个小批量训练的神经网络中,一个输入单元被包括的概率为 0.8 ,一个隐藏单元被包括的概率为 0.5 。
然后,我们运行和之前一样的前向传播、反向传播以及学习更新。
更正式地说,假设一个掩码向量 u 指定被包括的单元, J ( θ , u ) 是由参数 θ 和掩码 u 定义的模型代价。
那么Dropout训练的目标是最小化 E u J ( θ , u ) 。 这个期望包含多达指数级的项,但我们可以通过抽样 mu获得梯度的无偏估计。
Dropout训练与Bagging训练不太一样。 在Bagging的情况下,所有模型都是独立的。
在Dropout的情况下,所有模型共享参数,其中每个模型继承父神经网络参数的不同子集。 参数共享使得在有限可用的内存下表示指数级数量的模型变得可能。
在Bagging的情况下,每一个模型在其相应训练集上训练到收敛。
在Dropout的情况下,通常大部分模型都没有显式地被训练,因为通常父神经网络会很大,以致于到宇宙毁灭都不可能采样完所有的子网络。
取而代之的是,在单个步骤中我们训练一小部分的子网络,参数共享会使得剩余的子网络也能有好的参数设定。 这些是仅有的区别。
除了这些,Dropout与Bagging算法一样。 例如,每个子网络中遇到的训练集确实是有放回采样的原始训练集的一个子集。
Bagging集成必须根据所有成员的累积投票做一个预测。 在这种背景下,我们将这个过程称为 推断 。
目前为止,我们在介绍Bagging和Dropout时没有要求模型具有明确的概率。 现在,我们假定该模型的作用是输出一个概率分布。
在Bagging的情况下,每个模型 i 产生一个概率分布 p ( i ) ( y ∣ x ) 。
集成的预测由这些分布的算术平均值给出:
其中 p ( u ) 是训练时采样 u 的概率分布。
虽然Dropout在特定模型上每一步的代价是微不足道的,但在一个完整的系统上使用Dropout的代价可能非常显著。
因为Dropout是一个正则化技术,它减少了模型的有效容量。 为了抵消这种影响,我们必须增大模型规模。
不出意外的话,使用Dropout时最佳验证集的误差会低很多,但这是以更大的模型和更多训练算法的迭代次数为代价换来的。
对于非常大的数据集,正则化带来的泛化误差减少得很小。 在这些情况下,使用Dropout和更大模型的计算代价可能超过正则化带来的好处。
11. 对抗训练
我们可以训练分类器为 x 和 x ′ 分配相同的标签。 这鼓励分类器学习一个沿着未标签数据所在流形上任意微小变化都很鲁棒的函数。
驱动这种方法的假设是,不同的类通常位于分离的流形上,并且小扰动不会使数据点从一个类的流形跳到另一个类的流形上。
进行对抗训练的目的是使分类结果对训练样本 小邻域 更加鲁棒!
12. 切面距离、正切传播和流形正切分类器
正切传播算法训练带有额外惩罚的神经网络分类器,使神经网络的每个输出 f ( x ) 对已知的变化因素是局部不变的。
这些变化因素对应于沿着的相同样本聚集的流形的移动。 这里实现局部不变性的方法是要求 ∇ x f ( x ) 与已知流形的切向 v(i)正交,或者等价地通过正则化惩罚 Ω 使 f 在 x 的 v ( i ) 方向的导数较小: